// import { defineConfig } from 'vite'
import { defineConfig, loadEnv, ConfigEnv } from 'vite';

import vue from '@vitejs/plugin-vue'
import { resolve } from "path";
import path from 'path'
// 自动导入vue中hook reactive ref等
import AutoImport from "unplugin-auto-import/vite"
//自动导入ui-组件 比如说ant-design-vue  element-plus等
import Components from 'unplugin-vue-components/vite';
import svgLoader from 'vite-svg-loader'
import { createSvgIconsPlugin } from 'vite-plugin-svg-icons'
// mockjs
import { viteMockServe } from 'vite-plugin-mock';
// 配置 mock 插件
const mockConfig = {
	// 支持的模拟数据的路径
	supportTs: false, // 如果你的 mock 文件是 TypeScript，需要设为 true
	mockPath: 'src/mock', // 指定mock文件的目录
	localEnabled: process.env.NODE_ENV === 'development', // 是否只在开发环境启用
	enable: true, // 是否启用 mock 功能
};
// https://vitejs.dev/config/
const viteConfig = defineConfig((mode: ConfigEnv) => {
	const env = loadEnv(mode.mode, process.cwd());
	return {
		server: {
			host: '0.0.0.0', //解决“vite use `--host` to expose”
			port: 8888,
			open: true,
			proxy: {
				'/api': {
					// target: 'http://172.16.15.16:8080', // 测试环境 潘雨
					target: 'http://172.16.15.20:8080', // 测试环境 李果
					// target: 'https://api-test.zzqz2024.com', // 测试环境 
					// target: 'https://api.zzqz2024.com', // 生产环境
					// target: 'http://192.168.0.101:8080', // 本地 周维
					changeOrigin: true, // 是否改变请求头的来源为目标 URL
					rewrite: (path) => path.replace(/^\/api/, ''), // 可选配置，用于重写请求路径
					bypass(req, res, options: any) {
						const realUrl = options.target + (options.rewrite ? options.rewrite(req.url) : '');
						console.log('实际地址 === ', realUrl); // 在终端显示
						res.setHeader('A-Real-Url', realUrl); // 添加响应标头(A-Real-Url为自定义命名)，在浏览器中显示 
					},
				},
			},
		},

		plugins: [
			vue(), svgLoader(),
			viteMockServe(mockConfig), // 注册 mock 插件
			AutoImport({
				//安装两行后你会发现在组件中不用再导入ref，reactive等
				imports: ['vue', 'vue-router'],
				//存放的位置
				dts: "src/auto-import.d.ts",
			}),
			Components({
				// 引入组件的,包括自定义组件
				// 存放的位置
				dts: "src/components.d.ts",
			}),
			createSvgIconsPlugin({
				// 指定要缓存的文件夹
				iconDirs: [path.resolve(process.cwd(), 'src/assets/svg')],
				// 指定symbolId格式
				symbolId: '[name]'
			}),
		],

		// ↓解析配置
		resolve: {
			// ↓路径别名
			alias: {
				"@": resolve(__dirname, "./src")
			}
		},
		define: {
			__VUE_I18N_LEGACY_API__: JSON.stringify(false),
			__VUE_I18N_FULL_INSTALL__: JSON.stringify(false),
			__INTLIFY_PROD_DEVTOOLS__: JSON.stringify(false),
			__NEXT_VERSION__: JSON.stringify(process.env.npm_package_version),
			__NEXT_NAME__: JSON.stringify(process.env.npm_package_name),
		},
	}
})
export default viteConfig;
